<html>
    <head>
        <title>列表结果 (接口 和 基类)</title>
    </head>
    <body>
        <script>
            /*
                  2、列表结果 List Result

                                                      向客户端返回DTO列表是常见的。IListResult<T>接口和ListResultDto<T>类用于使其成为标准。
                                                        
                                                      IListResult<T>接口的定义：

                                                                public interface IListResult<T>
                                                                {
                                                                    IReadOnlyList<T> Items { get; set; }
                                                                }

                                                      eg: 返回产品列表

                                                                using System;
                                                                using System.Collections.Generic;
                                                                using System.Threading.Tasks;
                                                                using Volo.Abp.Application.Dtos;
                                                                using Volo.Abp.Application.Services;
                                                                using Volo.Abp.Domain.Repositories;

                                                                namespace AbpDemo
                                                                {
                                                                    public class ProductAppService : ApplicationService, IProductAppService
                                                                    {
                                                                        private readonly IRepository<Product, Guid> _productRepository;

                                                                        public ProductAppService(IRepository<Product, Guid> productRepository)
                                                                        {
                                                                            _productRepository = productRepository;
                                                                        }

                                                                        public async Task<ListResultDto<ProductDto>> GetListAsync()
                                                                        {
                                                                            // 货物产品列表
                                                                            List<Product> products = await _productRepository.GetListAsync();

                                                                            // 映射到Dto
                                                                            List<ProductDto> productDtos =
                                                                                ObjectMapper.Map<List<Product>, List<ProductDto>>(products);

                                                                            //  返回列表结果对象
                                                                            return new ListResultDto<ProductDto>(productDtos);
                                                                        }
                                                                    }
                                                                }

                                                       你可以简单地返回productDtos对象（并更改方法返回类型），它没有任何问题。

                                                       返回ListResultDto会使你的List<ProductDto>作为Items属性包装到另一个对象中。

                                                       这有一个优点：你可以稍后在返回值中添加更多属性，而不会破坏你的远程客户端（当他们以JSON结果获取值时）。

            */
        </script>
    </body>
</html>